package top.wuyang.study.javawebjdbc.dao;

import top.wuyang.study.javawebjdbc.entity.TbClass;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class TbClassDAO {
    // jdbc:java数据库连接
    // dao: 数据访问对象
    // entity:实体类，一般就是描述数据的类
    // java.sql.Connection类就是数据库的连接类

    public static int insert(TbClass tbClass) throws SQLException {
        // 连接数据库
        Connection conn = DBHelper.getConnection();
        // 预备添加的语句,一个?表示一个参数
        String sql = "insert into tb_class (classname, classinfo) values(?,?)";
        // Java的预处理sql语句
        PreparedStatement ps = conn.prepareStatement(sql);
        // 设置?参数对应的值
        ps.setString(1,tbClass.getClassname());
        ps.setString(2,tbClass.getClassinfo());
        // 执行语句并获取语句影响的行数(对数据库产生影响的都用Update)
        int i = ps.executeUpdate();
        // 关闭数据库连接
        conn.close();
        return i;

    }

    public static List<TbClass> query() throws SQLException {
        List<TbClass> list = new ArrayList<>();
        // 数据库连接
        Connection conn = DBHelper.getConnection();
        // 查询语句
        String sql = "select * from tb_class";
        // 预处理sql语句
        PreparedStatement ps = conn.prepareStatement(sql);
        // 执行查询并返回结果值
        ResultSet rs = ps.executeQuery();
        // 查询结果集的next方法是读取下一行数据，如果读取到就返回真，否则就返回假
        while (rs.next()){
            // 将数据库的记录转化成java对象
            TbClass tbClass = new TbClass();
            // rs.get数据类型("数据表中字段名称")就是获取查询结果中指定字段的数据
            tbClass.setId( rs.getInt("id") );
            tbClass.setClassname( rs.getString("classname"));
            tbClass.setClassinfo( rs.getString("classinfo"));
            // java的date类型对应的是数据库api的Timestamp类型
            tbClass.setCreated( rs.getTimestamp("created"));
            // 添加到集合
            list.add(tbClass);

        }

        conn.close();
        return list;
    }

    public static int delete(Integer id) throws SQLException {
        Connection conn = DBHelper.getConnection();
        String sql = "delete from tb_class where id = ?";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setInt(1,id);
        int i = ps.executeUpdate();
        conn.close();
        return i;

    }





}
